Repository navigation
ci: patches job, candidate_id and replace for the hatchet pipeline - #2
Merged
Merged
Conversation
The check changes nothing in the checkout: each patch goes through git apply --check against a scratch index that already holds the patches before it, so a patch that builds on an earlier one is checked the way the real run applies it. Every patch that does not apply is listed with git's reason (the context it searched for), outside a log group so it is not folded away, and the exit status is 1 if any did not. A patch that reverses cleanly has landed upstream and is flagged for deletion. Checked on master-975-95b3090 (the series applies, the tree stays clean) and with test patches: one depending on 0001, a conflicting one, a ggml-- one and one already upstream. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
atomic-hatchet-pipeline is to sync this fork with each new upstream tag: it fast-forwards master, merges the tag into upstream-sync/<tag> made from atomic, and dispatches Release (Atomic) on that branch. What it needs here: - candidate_id goes into the run title as [cid:<id>], by which the pipeline finds its run when the dispatch returns no id; prepare rejects ids with spaces or brackets, which would break that match. - A first job named `patches` checks the series on the tag before anything is built, and every build job needs it. The pipeline tells a patch conflict (its agent fixes the series) from a broken build by whether this job failed, so its id and name are part of the interface. smoke-windows lists it too: its condition lets skipped jobs through, and a failed patches job skips them all. - publish no longer overwrites an existing release; the run fails in prepare, before hours of builds, unless replace is on. With replace, archives the build no longer names are removed: names carry the runner's macOS and the ROCm version, and mirror-sdcpp.yml in conf refuses two assets matching one pattern. atomic/README.md describes the sync, the upstream-sync/<tag> branches, the PR into atomic the pipeline merges, and how to fix a sync by hand. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What atomic-hatchet-pipeline (engine
sd-cpp) needs from Release (Atomic) to sync this fork with each new upstream tag throughupstream-sync/<tag>branches.candidate_idgoes into the run title as[cid:<id>]; the pipeline finds its run by it when the dispatch returns no id.preparerejects ids outside^[A-Za-z0-9._:-]{1,80}$.patches, the first job that touches the tree, runsatomic/ci/apply-patches.sh --checkon the tag; every build job needs it. The pipeline tells a patch conflict from a broken build by whether this job failed, so its id and name are part of the interface.replace: publishing an existing release now fails (early, inprepare) unless it is on. With it, archives the build no longer names are removed, since asset names carry the runner's macOS and the ROCm version and conf'smirror-sdcpp.ymlrefuses two matches of one pattern.apply-patches.sh --checkchanges nothing: each patch is checked on top of the ones before it in a scratch index, every one that does not apply is reported with git's reason, and one that reverses cleanly is flagged as already upstream.atomic/README.mddescribes the sync, the branches, the PR the pipeline merges, and how to fix a sync by hand.Checked:
--checkonmaster-975-95b3090(applies, tree stays clean) and with test patches (dependent, conflicting,ggml--, already upstream); a simulatedupstream-sync/master-975-95b3090merges cleanly and differs from the tag only in the Atomic files; actionlint + shellcheck report nothing new againstatomic.Upstream's
build.yml,stale-prs.ymlandclose-inactive-issues.ymlare disabled in this fork's Actions.🤖 Generated with Claude Code